好久没有更新了,最近比较忙,不过今天遇到一个很有意思的问题,就过来记录一下。
通过正则表达式匹配文本并替换。
在一个脚本中,有很多路径,此时我需要更改这个路径的部分,所以需要通过正则表达式来匹配,找到满足条件的字符串,然后再进行替换。
原始路径:
%USERPROFILE%\tools\test.cmd
替换后的路径:
C:\tools\test.cmd
代码内容:
using System;
using System.Text.RegularExpressions;
namespace test
{
class Program
{
static void Main(string[] args)
{
string a = "%USERPROFILE%\\tools\\test.cmd";
string regexStr = @"^\%.*\%"; // 匹配已 % 开头和结尾,中间有一个或多个字符串
string c = Regex.Replace(a, regexStr,"C:"); // 通过 Regex 类中的 Replace 方法,来进行匹配替换
Console.WriteLine(c);
}
}
}
Replace 语法:
Regex.Replace(源文本, 匹配规则,替换字符串)
为什么说这个很有意思呢,我的理解:在匹配规则的时候,我使用了 @,后面应该都转义了,不需要额外的转义字符了,应该可以直接将两个 % 当成字符串进行匹配,结果确不行。
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.